1736E - Swap and Take - CodeForces Solution


dp greedy *2600

Please click on ads to support us..

Python Code:

n,a=int(input()),list(map(int,input().split()))
INF=10**9+7
f=[[-INF]*(n+1) for j in range(n+1)]
s=[[0]*(n+1) for j in range(n+1)]
ans=-INF
for i in range(1,n+1):
	for j in range(n,0,-1):
		for k in range(i,-1,-1):	
			if k:
				f[j][k]=f[j][k-1]+a[j-1]
			if j>=i and i+k>=j:
				f[j][k]=max(f[j][k],s[j-1][i+k-j]+a[j-1])
			ans=max(ans,f[j][k])
	for j in range(1,n+1):
		for k in range(i+1):
			s[j][k]=max(s[j-1][k],f[j][k])
print(ans)


Comments

Submit
0 Comments
More Questions

1702B - Polycarp Writes a String from Memory
1701A - Grass Field
489C - Given Length and Sum of Digits
886B - Vlad and Cafes
915A - Garden
356A - Knight Tournament
1330A - Dreamoon and Ranking Collection
1692B - All Distinct
1156C - Match Points
1675A - Food for Animals
1328C - Ternary XOR
1689A - Lex String
1708B - Difference of GCDs
863A - Quasi-palindrome
1478A - Nezzar and Colorful Balls
1581B - Diameter of Graph
404A - Valera and X
908A - New Year and Counting Cards
146A - Lucky Ticket
1594C - Make Them Equal
1676A - Lucky
1700B - Palindromic Numbers
702C - Cellular Network
1672C - Unequal Array
1706C - Qpwoeirut And The City
1697A - Parkway Walk
1505B - DMCA
478B - Random Teams
1705C - Mark and His Unfinished Essay
1401C - Mere Array